這裡接續上一篇的功能~
回顧上一篇功能:
1.新增按鈕
2.新增矩形
3.矩形顏色隨機顯示
今天新增的一些小功能
1.微調產矩形生位置
2.建立一個createRectangle函式,插入addRectangleButton監聽內
讓變數lastRectanglePosition預設值為{ left: 50, top: 50 }, 之後會用到。
const menu = document.getElementById('menu');
const container = document.getElementById('container');
const addRectangleButton = document.getElementById('addRectangle');
const deleteRectangleButton = document.getElementById('deleteRectangle');
const saveStateButton = document.getElementById('saveState');
const loadStateButton = document.getElementById('loadState');
const info = document.getElementById('info');
let lastRectanglePosition = { left: 50, top: 50 }; //新增lastRectanglePosition
function getRandomOffset() {
return Math.floor(Math.random() * 50) - 20; // Random offset between -20 and 20
}
說明:
1.隨機浮點數乘以50,會得到一個範圍在 0 到 50 之間的隨機浮點數。例如,生成的隨機數可能是 12.3、49.35 等...
2.Math.floor() 函數會對數字無條件捨去。
3.將隨機整數減去 20,將範圍轉換為 -20 到 20 之間的隨機整數。
4.這樣會生成一個範圍從 -20 到 20 的整數。例如,Math.floor(Math.random() * 50) 生成了 37,那麼 37 - 20 就是 17;如果生成了 10,那麼 10 - 20 就是 -10。
addRectangleButton監聽:
addRectangleButton.addEventListener('click', function () {
console.log(addRectangleButton);
const rectangle = createRectangle();
container.appendChild(rectangle);
})
function createRectangle:
function createRectangle() {
const rectangle = document.createElement('div');
rectangle.classList.add('rectangle');
rectangle.style.width = '100px';
rectangle.style.height = '100px';
rectangle.style.backgroundColor = getRandomColor();
return rectangle; //return to the addRectangleButton
}
說明:
新增一些微調設定的程式碼到createRectangle函式內:
function createRectangle() {
const rectangle = document.createElement('div');
rectangle.classList.add('rectangle');
rectangle.style.width = '100px';
rectangle.style.height = '100px';
rectangle.style.backgroundColor = getRandomColor();
const offsetX = getRandomOffset();
const offsetY = getRandomOffset();
const newLeft = Math.min(Math.max(0, lastRectanglePosition.left + offsetX), container.clientWidth - 100);
const newTop = Math.min(Math.max(0, lastRectanglePosition.top + offsetY), container.clientHeight - 100);
rectangle.style.left = newLeft + 'px';
rectangle.style.top = newTop + 'px';
lastRectanglePosition = { left: newLeft, top: newTop };
return rectangle; //add return add to the addRectangleButton
}
說明: